#include "watchdog.h"

/**
  * @brief  独立看门狗初始化
  * @param  None
  * @retval None
  */
void WATCHDOG_Init(void)
{
    /* 启动内部低速时钟LSI */
    RCC_LSICmd(ENABLE);
    
    /* 等待LSI稳定 */
    while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET);
    
    /* 写入0x5555，用于允许狗狗寄存器写入功能 */
    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
    
    /* 狗狗时钟分频，40K/256=156.25HZ(6.4ms) */
    IWDG_SetPrescaler(IWDG_Prescaler_256);
    
    /* 看门狗重装载值，设置为1562，约10秒超时 */
    /* 计算：3124 * 6.4ms = 19993.6ms ≈ 20s */
    /* 注意：IWDG重装载值最大为4095 (12位寄存器) */
    IWDG_SetReload(3124);
    
    /* 重装载，喂狗 */
    IWDG_ReloadCounter();
    
    /* 使能狗狗 */
    IWDG_Enable();
		
}
